/* 
 * Copyright (C)2008 Vladimir Hozjan vladimir.hozjan@gmail.com
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */

/**
 * @file tetrisMatrix.h  
 *
 * Declaration of tetris matrix class 
 *
 * @author Vladimir Hozjan
 * @date   28.12.2008 
 *
 * @remarks VHOZ [28.12.2008]: file created
 */
#ifndef _tetrisMatrix_
#define _tetrisMatrix_

/**
 * @class TetrisMatrix
 *
 * @brief Matrix of cells
 *
 * @author Vladimir Hozjan, ITPSF2
 *
 * @remark VHOZ [28.12.2008]: Class created
 */
class TetrisMatrix
{
public:
  /// destructor
  ~TetrisMatrix();

  /// get element
  unsigned short getCell( unsigned short aRow, unsigned short aCol ) const ;

  /// get rows
  unsigned short getNumRows() const {return mNumRows;};

  /// get rows
  unsigned short getNumCols() const {return mNumCols;};

protected:
  /// Constructor
  TetrisMatrix(unsigned short aNumRows, unsigned short aNumCols);

  /// copy constructor
  TetrisMatrix(TetrisMatrix const &); 

  unsigned short mNumRows; ///< number of rows
  unsigned short mNumCols; ///< number of columns

  unsigned short **mMatrix; ///< matrix with row x columns elements 

private:
  /// default constructor not allowed
  TetrisMatrix();

  /// Initialization of matrix
  void initialize( unsigned short aNumRows, unsigned short aNumCols );
};

#endif // _tetrisMatrix_
